From c1c19147bea3ee55b9e0f6d34ab88dda6f60fb66 Mon Sep 17 00:00:00 2001 From: tsteven4 Date: Thu, 1 Aug 2013 03:59:09 +0000 Subject: [PATCH] fix memory leak in garmin_fit. Also fix an error in the mask for local messsage type. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4494 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/garmin_fit.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gpsbabel/garmin_fit.cc b/gpsbabel/garmin_fit.cc index 1ee872f0a..504868169 100644 --- a/gpsbabel/garmin_fit.cc +++ b/gpsbabel/garmin_fit.cc @@ -68,6 +68,15 @@ fit_rd_init(const char* fname) static void fit_rd_deinit(void) { + int local_id; + + for (local_id=0; local_id<16; local_id++) { + fit_message_def* def = &fit_data.message_def[local_id]; + if (def->fields) { + xfree(def->fields); + } + } + gbfclose(fin); } @@ -184,12 +193,12 @@ fit_getuint32(void) static void fit_parse_definition_message(uint8_t header) { - int local_id = header & 0x1f; + int local_id = header & 0x0f; fit_message_def* def = &fit_data.message_def[local_id]; int i; if (def->fields) { - free(def->fields); + xfree(def->fields); } // first byte is reserved. It's usually 0 and we don't know what it is, -- 2.30.2